
#pragma once

#include "VirtualKeys.h"
#include <vector>

namespace FlameEngine
{
	enum InputState
	{
		it_undefined = 0,
		it_keyDown = 0x0001,
		it_keyUp = 0x0002,
		it_mouseScrool = 0x0004,
		it_mouseMove = 0x0008,
	};	

	class InputAction
	{
		VirtualKey key;
		InputState state;
		float x;
		float y;
		float z;
		float value;
	};

	IInputMsgReceiver
	{
		void SendInputMessage(const InputAction& action);
	}

	class Input
	{
	public:
		InputState GetKeyState(VirtualKey key);

	private:
		IInputMsgReceiver* m_pInputReceiver;
		std::vector<InputAction> cachedInput0;
		std::vector<InputAction> cachedInput1;
	};
}